#include <iostream>
#include <vector>

void test01()
{
    using namespace std;

    vector<int> v = vector<int>();

    v.push_back(10);
    v.push_back(20);
    v.push_back(30);

    vector<int>::iterator it = v.begin(); // v.begin()返回指向vector 首元素的指针，v.end() 返回vector 末尾元素的下一个指针
    cout << *it << endl;

    it++;
    cout << *it << endl;

    it++;
    cout << *it << endl;
    cout << "************" << endl;

    for (vector<int>::iterator i = v.begin(); i != v.end(); i++) // 在迭代过程中可以修改
    {
        if (*i == 20)
        {
            *i = 999;
        }
    }

    for (vector<int>::iterator i = v.begin(); i != v.end(); i++)
    {
        cout << *i << endl;
    }

    cout << "***************" << endl;

    for (int i : v) // 这种就不可以修改了
    {
        cout << i << endl;
    }

    for (int &i : v) // 这种就可以修改了，因为使用的是引用，相当于其本身.
    {
        i = 100;
    }
    cout << "***************" << endl;

    for (int i : v) // 这种就不可以修改了
    {
        cout << i << endl;
    }
    int array[] = {1, 3, 2, 4, 0, 1, 2};
    vector<int> v1 = vector<int>(array, array + 7);
    for (vector<int>::reverse_iterator i = v1.rbegin(); i != v1.rend(); i++)
    {
        cout << *i << endl;
    }

    for (int i : v1)
    {
        cout << i << endl;
    }
}

int main(int argc, char const *argv[])
{
    test01();
    return 0;
}
